\hypertarget{classcCayleyGrf}{\section{c\-Cayley\-Grf$<$ G $>$ Class Template Reference}
\label{classcCayleyGrf}\index{c\-Cayley\-Grf$<$ G $>$@{c\-Cayley\-Grf$<$ G $>$}}
}


{\ttfamily \#include $<$cayley\-\_\-graph.\-h$>$}



Collaboration diagram for c\-Cayley\-Grf$<$ G $>$\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=550pt]{classcCayleyGrf__coll__graph}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classcCayleyGrf_1_1cColourEdgesVis}{c\-Colour\-Edges\-Vis}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcCayleyGrf_a96e2347884f970817ad4f941ff85f478}{typedef G\-::\-Element\-Type {\bfseries Elem\-Type}}\label{classcCayleyGrf_a96e2347884f970817ad4f941ff85f478}

\item 
\hypertarget{classcCayleyGrf_a431bdfe2bfca2f3663f4258b648d702f}{typedef boost\-::adjacency\-\_\-list\\*
$<$ boost\-::vec\-S, boost\-::vec\-S, \\*
boost\-::bidirectional\-S, \\*
boost\-::no\-\_\-property, std\-::pair\\*
$<$ std\-::size\-\_\-t, bool $>$ $>$ {\bfseries Graph}}\label{classcCayleyGrf_a431bdfe2bfca2f3663f4258b648d702f}

\item 
\hypertarget{classcCayleyGrf_a1ef27f6e825137691b820322094745b3}{typedef boost\-::graph\-\_\-traits\\*
$<$ Graph $>$\-::vertex\-\_\-descriptor {\bfseries Vertex}}\label{classcCayleyGrf_a1ef27f6e825137691b820322094745b3}

\item 
\hypertarget{classcCayleyGrf_abade7422415758e7d2699ccfa052accb}{typedef boost\-::graph\-\_\-traits\\*
$<$ Graph $>$\-::edge\-\_\-descriptor {\bfseries Edge}}\label{classcCayleyGrf_abade7422415758e7d2699ccfa052accb}

\item 
\hypertarget{classcCayleyGrf_a8a2a9d7e45de509f97daf663b6827496}{typedef boost\-::graph\-\_\-traits\\*
$<$ Graph $>$\-::vertex\-\_\-iterator {\bfseries Vertex\-Iterator}}\label{classcCayleyGrf_a8a2a9d7e45de509f97daf663b6827496}

\item 
\hypertarget{classcCayleyGrf_a1430d999d3cc6eb645211d8b8d4fed50}{typedef boost\-::graph\-\_\-traits\\*
$<$ Graph $>$\-::out\-\_\-edge\-\_\-iterator {\bfseries out\-Edge}}\label{classcCayleyGrf_a1430d999d3cc6eb645211d8b8d4fed50}

\item 
\hypertarget{classcCayleyGrf_adcb19c46bdccc19e48230b671c97f6f9}{typedef boost\-::graph\-\_\-traits\\*
$<$ Graph $>$\-::in\-\_\-edge\-\_\-iterator {\bfseries in\-Edge}}\label{classcCayleyGrf_adcb19c46bdccc19e48230b671c97f6f9}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcCayleyGrf_ac94c0ddf2262aab4ce17454fb10e7286}{{\bfseries c\-Cayley\-Grf} (std\-::vector$<$ Elem\-Type $>$ \&elements, std\-::vector$<$ Elem\-Type $>$ \&generators)}\label{classcCayleyGrf_ac94c0ddf2262aab4ce17454fb10e7286}

\item 
\hypertarget{classcCayleyGrf_a6f1bc787dd952aae0b5e5d4d6d39fe35}{{\bfseries c\-Cayley\-Grf} (G \&group)}\label{classcCayleyGrf_a6f1bc787dd952aae0b5e5d4d6d39fe35}

\item 
\hypertarget{classcCayleyGrf_a0b2e24fa4d3b4424888203b004eaf33d}{void {\bfseries init\-Graph} (const std\-::vector$<$ Elem\-Type $>$ \&elements, const std\-::vector$<$ Elem\-Type $>$ \&generators)}\label{classcCayleyGrf_a0b2e24fa4d3b4424888203b004eaf33d}

\item 
\hypertarget{classcCayleyGrf_ae597aa2fce821346c6f3976e70eb6a75}{{\bfseries c\-Cayley\-Grf} (const \hyperlink{classcCayleyGrf}{c\-Cayley\-Grf} \&graph)}\label{classcCayleyGrf_ae597aa2fce821346c6f3976e70eb6a75}

\item 
\hypertarget{classcCayleyGrf_a31a02f7a0e7702fe953409f7f82888be}{\hyperlink{classcCayleyGrf}{c\-Cayley\-Grf} \& {\bfseries operator=} (const \hyperlink{classcCayleyGrf}{c\-Cayley\-Grf} \&graph)}\label{classcCayleyGrf_a31a02f7a0e7702fe953409f7f82888be}

\item 
void \hyperlink{classcCayleyGrf_a4a0ff02aa7bb9d556456b34e9f66f3d9}{Build\-Graph} ()
\item 
void \hyperlink{classcCayleyGrf_a8517436f6101a294fa7f30355efaa196}{Build\-Def\-Relations} ()
\item 
\hypertarget{classcCayleyGrf_a3e564efb726dd010598404e7aeb7737c}{const std\-::vector\\*
$<$ \hyperlink{classcGroupRelation}{c\-Group\-Relation} $>$ \& {\bfseries Get\-Def\-Relations} () const }\label{classcCayleyGrf_a3e564efb726dd010598404e7aeb7737c}

\item 
Graph $\ast$ \hyperlink{classcCayleyGrf_aeb4d8533b65921ca63fdaaf4516f92f6}{Get\-Graph} () const 
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classcCayleyGrf_a1d6153e03d163ea10242b4088091c705}{Add\-\_\-\-Def\-Relation} (const Edge \&edge, std\-::vector$<$ std\-::size\-\_\-t $>$ \&spanning\-\_\-tree)
\item 
void \hyperlink{classcCayleyGrf_a2598371d6a962b027539109023bc65b5}{Trace\-Relations} ()
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcCayleyGrf_af4c3fa359332e9097ad511da6df21e01}{std\-::vector$<$ Elem\-Type $>$ {\bfseries m\-\_\-\-Elements}}\label{classcCayleyGrf_af4c3fa359332e9097ad511da6df21e01}

\item 
\hypertarget{classcCayleyGrf_aa0263f38d2605e8b1c43830af0dd7d9b}{std\-::vector$<$ Elem\-Type $>$ {\bfseries m\-\_\-\-Generators}}\label{classcCayleyGrf_aa0263f38d2605e8b1c43830af0dd7d9b}

\item 
\hypertarget{classcCayleyGrf_a8ac7f5226ca5868bfb9bbfbd10021981}{Graph $\ast$ {\bfseries m\-\_\-\-Graph}}\label{classcCayleyGrf_a8ac7f5226ca5868bfb9bbfbd10021981}

\item 
\hypertarget{classcCayleyGrf_a3d283f6c83baff00377c6784743b2e27}{std\-::vector$<$ \hyperlink{classcGroupRelation}{c\-Group\-Relation} $>$ {\bfseries m\-\_\-\-Def\-Relations}}\label{classcCayleyGrf_a3d283f6c83baff00377c6784743b2e27}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcCayleyGrf_a335728ff704ed565af614d4eadbc4609}{std\-::ostream \& {\bfseries operator$<$$<$} (std\-::ostream \&out, const \hyperlink{classcCayleyGrf}{c\-Cayley\-Grf} \&graph)}\label{classcCayleyGrf_a335728ff704ed565af614d4eadbc4609}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename G$>$class c\-Cayley\-Grf$<$ G $>$}

implementation of a Cayley Graph(used to represent an abbreviated multiplication table) template must be instantiated with a group type uses Boost Graph Library for graph representation as an adjacency list 

\subsection{Member Function Documentation}
\hypertarget{classcCayleyGrf_a1d6153e03d163ea10242b4088091c705}{\index{c\-Cayley\-Grf@{c\-Cayley\-Grf}!Add\-\_\-\-Def\-Relation@{Add\-\_\-\-Def\-Relation}}
\index{Add\-\_\-\-Def\-Relation@{Add\-\_\-\-Def\-Relation}!cCayleyGrf@{c\-Cayley\-Grf}}
\subsubsection[{Add\-\_\-\-Def\-Relation}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename G $>$ void {\bf c\-Cayley\-Grf}$<$ G $>$\-::Add\-\_\-\-Def\-Relation (
\begin{DoxyParamCaption}
\item[{const Edge \&}]{edge, }
\item[{std\-::vector$<$ std\-::size\-\_\-t $>$ \&}]{spanning\-\_\-tree}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [private]}}}\label{classcCayleyGrf_a1d6153e03d163ea10242b4088091c705}
add the defining relation corresponding to the given vertex to the set of defining relations 

Here is the call graph for this function\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classcCayleyGrf_a1d6153e03d163ea10242b4088091c705_cgraph}
\end{center}
\end{figure}


\hypertarget{classcCayleyGrf_a8517436f6101a294fa7f30355efaa196}{\index{c\-Cayley\-Grf@{c\-Cayley\-Grf}!Build\-Def\-Relations@{Build\-Def\-Relations}}
\index{Build\-Def\-Relations@{Build\-Def\-Relations}!cCayleyGrf@{c\-Cayley\-Grf}}
\subsubsection[{Build\-Def\-Relations}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename G $>$ void {\bf c\-Cayley\-Grf}$<$ G $>$\-::Build\-Def\-Relations (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcCayleyGrf_a8517436f6101a294fa7f30355efaa196}
extract the set of defining relations using Cannon's algorithm with one stage see Butler -\/ \char`\"{}\-Fundamental Algorithms for permutation groups\char`\"{} 

Here is the call graph for this function\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classcCayleyGrf_a8517436f6101a294fa7f30355efaa196_cgraph}
\end{center}
\end{figure}


\hypertarget{classcCayleyGrf_a4a0ff02aa7bb9d556456b34e9f66f3d9}{\index{c\-Cayley\-Grf@{c\-Cayley\-Grf}!Build\-Graph@{Build\-Graph}}
\index{Build\-Graph@{Build\-Graph}!cCayleyGrf@{c\-Cayley\-Grf}}
\subsubsection[{Build\-Graph}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename G $>$ void {\bf c\-Cayley\-Grf}$<$ G $>$\-::Build\-Graph (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcCayleyGrf_a4a0ff02aa7bb9d556456b34e9f66f3d9}
builds the Cayle graph as and adjacency list\-: the nodes are the indexes of the elements, the edges are the indexes of the generators Complexity\-: O(n$\ast$m), where n is the number of generators and m the number of elements \hypertarget{classcCayleyGrf_aeb4d8533b65921ca63fdaaf4516f92f6}{\index{c\-Cayley\-Grf@{c\-Cayley\-Grf}!Get\-Graph@{Get\-Graph}}
\index{Get\-Graph@{Get\-Graph}!cCayleyGrf@{c\-Cayley\-Grf}}
\subsubsection[{Get\-Graph}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename G $>$ Graph$\ast$ {\bf c\-Cayley\-Grf}$<$ G $>$\-::Get\-Graph (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcCayleyGrf_aeb4d8533b65921ca63fdaaf4516f92f6}
returns the underlying graph representation (adjacency list) \hypertarget{classcCayleyGrf_a2598371d6a962b027539109023bc65b5}{\index{c\-Cayley\-Grf@{c\-Cayley\-Grf}!Trace\-Relations@{Trace\-Relations}}
\index{Trace\-Relations@{Trace\-Relations}!cCayleyGrf@{c\-Cayley\-Grf}}
\subsubsection[{Trace\-Relations}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename G $>$ void {\bf c\-Cayley\-Grf}$<$ G $>$\-::Trace\-Relations (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [private]}}}\label{classcCayleyGrf_a2598371d6a962b027539109023bc65b5}
trace the relations around all the nodes in the graph and colour the appropriate edges (if loop contains exactly one uncoloured edge) 

The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
cayley\-\_\-graph.\-h\end{DoxyCompactItemize}
